﻿#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//一维数组传参
//void test(int arr[])
//{
//	int sz2 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz2 = %d\n", sz2);
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz1 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz1 = %d\n", sz1);
//	test(arr);
//	return 0;
//}
//这里运行程序，注意到居然sz2，与sz1的字节个数不同，
//实际上，数组名传过去便是地址了，地址在x64中字节为8
//sizeof计算出来便为8，除以int 4个字节，便为2，
//这就是差别
//正是因为函
//数的参数部分是本质是指针，所以在函数内部是没办法求的数组元素个数的。


//所以用函数打印数组元素时，需要在外头先计算好个数，传进函数里头
//
//void test(int arr[])//参数写成数组形式，本质上还是指针
//
//{
//	printf("%d\n", sizeof(arr));
//}
//
//void test(int* arr)//参数写成指针形式
//
//{
// printf("%d\n", sizeof(arr));//计算⼀个指针变量的⼤⼩
//
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	test(arr);
//	return 0;
//}


//总结：⼀维数组传参，形参的部分可以写成数组的形式，也可以写成指针的形式。

//下面为冒泡排序，练习,方法1
//void bubble_sort(int arr[], int sz)//参数接收数组元素个数
//
//{
//	int i = 0;
//
//	for (i = 0; i < sz - 1; i++)
//
//	{
//		int j = 0;
//		for (j = 0; j < sz - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//	}
//}
//int main()
//{
//		 int arr[] = {3,1,7,5,8,9,0,2,4,6};
//		 int sz = sizeof(arr) / sizeof(arr[0]);
//		 bubble_sort(arr, sz);
//		 int i = 0;
//		 for (i = 0; i < sz; i++)
//		 {
//			 printf("%d ", arr[i]);
//		 }
//		 return 0;
//}


//方法2，优化后
//void bubble_sort(int arr[], int sz)//参数接收数组元素个数
//
//{
//    int i = 0;
//    for (i = 0; i < sz - 1; i++)
//    {
//        int flag = 1;//假设这⼀趟已经有序了
//
//        int j = 0;
//        for (j = 0; j < sz - i - 1; j++)
//        {
//            if (arr[j] > arr[j + 1])
//            {
//                flag = 0;//发⽣交换就说明，⽆序
//
//                int tmp = arr[j];
//                arr[j] = arr[j + 1];
//                arr[j + 1] = tmp;
//            }
//        }
//        if (flag == 1)//这⼀趟没交换就说明已经有序，后续⽆序排序了
//
//            break;
//    }
//}
//int main()
//{
//    int arr[] = { 3,1,7,5,8,9,0,2,4,6 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    bubble_sort(arr, sz);
//    int i = 0;
//    for (i = 0; i < sz; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}